Uniform resource name

A uniform resource name (URN) is a uniform resource identifier (URI) that uses the urn scheme and does not imply availability of the identified resource. Both URNs (names) and URLs (locators) are URIs, and a particular URI may be a name and a locator at the same time.

The functional requirements for uniform resource names are described in RFC 1737. The URNs are part of a larger Internet information architecture which is composed of URNs, uniform resource characteristics (URCs), and uniform resource locators (URLs). Each plays a specific role:

RFC 2141 ("URN syntax") says:

Uniform resource names (URNs) are intended to serve as persistent, location-independent resource identifiers and are designed to make it easy to map other namespaces (that share the properties of URNs) into URN-space. Therefore, the URN syntax provides a means to encode character data in a form that can be sent in existing protocols, transcribed on most keyboards, etc.

It is worth noting that, as stated in RFC 3986 ("uniform resource identifier generic syntax"),

The term "uniform resource name" (URN) has been used historically to refer to both URIs under the "urn" scheme (RFC 2141), which are required to remain globally unique and persistent even when the resource ceases to exist or becomes unavailable, and to any other URI with the properties of a name.

Contents

URN syntax

RFC 2141 (dated May 1997 and still classified as requests discussion and suggestions for improvements) describe in BNF the syntax of URNs as:

<URN> ::= "urn:" <NID> ":" <NSS>
where <NID> is the namespace identifier, and <NSS> is the namespace-specific string. Phrases enclosed in quotes are Required. The leading "urn:" sequence is case-insensitive. The namespace ID determines the syntactic interpretation of the namespace-specific string.

Comparison with URLs

A URN is similar to a person's name, while a URL is like a street address. The URN defines something's identity, while the URL provides a location. Essentially, "what" vs. "where".

URNs are often compared to the ISBN system for uniquely identifying books (and in fact, it is possible to encode an ISBN as a URN). Having a book's unique identifier lets you discuss the book, such as whether you've read it, enjoyed it, etc. To actually read the book, however, you need its location (e.g., "on the bedside table"). So URNs and URLs are often complementary; for example, you might discuss an RFC using both concepts: "you can find urn:ietf:rfc:3187 (URN) over at http://tools.ietf.org/html/rfc3187.html (URL)."

Examples

urn:isbn:0451450523
The URN for The Last Unicorn (1968 book), identified by its book number.
urn:isan:0000-0000-9E59-0000-O-0000-0000-2
The URN for Spider-Man (2002 film) identified by its audiovisual number.
urn:issn:0167-6423
The URN for the Science of Computer Programming (scientific journal), identified by its serial number.
urn:ietf:rfc:2648
The URN for the IETF's RFC 2648.
urn:mpeg:mpeg7:schema:2001
Default Namespace Rules for MPEG-7 video metadata.
urn:oid:2.16.840
The URN corresponding to the OID for the United States.
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
A URN using a version 1 UUID.

Non-standard usage

The following are examples for "non-standard" URNs, i.e. identifiers that don't use officially registered (per RFC 3406) namespaces, which, though, match the syntax defined in RFC 2141 (URN Syntax).

urn:www.agxml.org:schemas:all:2:0
A non-standard URN representing a namespace for Schema "Agricultural Markup Language 2.0 for Grain and Oilseed Business".
urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C
A non-standard URN representing a specific MP3 file of the I have a dream speech by Martin Luther King by its SHA-1 hash Base32 encoded.
urn:tree:tiger:BL5OM7M75DWHAXMFZFJ23MU3LVMRXKFO6HTGUTY
A non-standard URN representing the same MP3 file this time using its Tiger Tree hash. Both these schemes can be used to look up data about specific files, for example using Bitzi.
urn:sici:1046-8188(199501)13:1%3C69:FTTHBI%3E2.0.TX;2-4
A specific article in the journal "ACM Transactions on Information Systems", identified by its percent-encoded SICI code.[1]

Resolvers

A URN resolver is responsible for initiating and sequencing the queries that ultimately lead to a full resolution (translation) of a URN name or a "resolution request", e.g., a request for translation of a URN name into a URL.

An example server-side URN resolver: see RFC 2169.

See also

External links